package com.qingmeng.applyjob.portal.service;


import com.qingmeng.applyjob.portal.model.dto.*;
import com.qingmeng.applyjob.portal.model.vo.CoachListVo;
import com.qingmeng.applyjob.portal.model.vo.CoachingRecordListVo;
import com.qingmeng.applyjob.portal.model.vo.MyCoachListVo;
import com.qingmeng.applyjob.portal.model.vo.TeacherVo;

import java.util.List;

public interface CoachService {
    /**
     * 填写辅导老师的基本信息
     * @param improveTeacherInformationParam 前端传来的教师信息
     * @return
     */
    int improveTeacherInformation(ImproveTeacherInformationParam improveTeacherInformationParam);
    /**
     * 发布辅导 (辅导信息以及老师信息)
     * @param coachPublishParam 前端传来的 要发布的辅导相关信息以及老师相关信息
     * @return 成功返回1 失败返回0
     */
    int publishCoach(CoachPublishParam coachPublishParam);

    /**
     * 获取教师信息
     * @param teacherId 前端传来的教师id
     * @param coachId 前端传来的辅导id
     * @return
     */
    TeacherVo teacherInformation(Long teacherId,Long coachId);

    /**
     * 获取辅导列表
     * @param pageNum 页码
     * @param pageSize 每页信息的条数
     * @return
     */
    List<CoachListVo> coachList(int pageNum , int pageSize);

    /**
     * 预约留言
     * @param leaveMessageParam 前端传来的预约辅导相关的信息
     * @return
     */
    int leaveMessage(LeaveMessageParam leaveMessageParam);

    /**
     * 发布评论
     * @param commentPublishParam 前端传来评论相关的信息
     * @return
     */
    int postComment(CommentPublishParam commentPublishParam);

    /**
     * 回复评论
     * @param replyPublishParam 前端传来回复评论相关的信息
     * @return
     */
    int postReply(ReplyPublishParam replyPublishParam);

    /**
     * 获取导师辅导记录
     * @param pageNum 页码
     * @param pageSize 每页的信息条数
     * @param teacherId 想要获取记录的教师id
     * @param flag 控制排序顺序 0为数据库顺序 1为按价格顺序排列 ， 2为铵价格逆序排列 ， 3为按时间顺序排列 ， 4为按时间逆序排列
     * @return
     */
    CoachingRecordListVo coachingRecords(int pageNum , int pageSize ,Long teacherId , int flag);

    /**
     * 获取我的辅导（未认证）
     * @param pageNum 页码
     * @param pageSize 每页信息条数
     * @return 我的辅导列表
     */
    List<MyCoachListVo> getMyNotCertificatedCoachList(int pageNum , int pageSize);
}
